Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

256
Visualizações
Usar "valor" como identificador en C#

Al escribir funciones de ayuda cortas, a menudo me encuentro queriendo usar el identificador de variable "valor" como argumento. Parece que Visual Studio compila esto muy bien y no tiene quejas cuando hago esto:

 public void MyMethod(int value, bool option, string message) { value = 1; // More code... }

Sin embargo, Visual Studio se queja de lo siguiente (como se esperaba):

 private int _myProperty; public int MyProperty { get { return _myProperty; } set { int value = 0; _myProperty = value; } }

Esto me lleva a creer que "valor" se trata como una palabra clave (o no) según el contexto. Soy bastante nuevo en C# y, que yo sepa, no he visto palabras clave específicas del contexto en otros idiomas.

La pregunta: ¿siempre es seguro usar "valor" como un nombre de variable fuera de un establecedor de propiedades? Si no, ¿cuándo se puede hacer esto de manera segura? Y, ¿a menudo esto se considera una mala práctica?

Me sorprendió que no pudiera encontrar esta pregunta ya formulada en SO, y sospecho que alguien la ha hecho antes. Sin embargo, es difícil de buscar porque muchas publicaciones tienen "variable" e "identificador" en el título. No pude encontrar información sobre esto en MSDN.

EDITAR: La última pregunta está destinada a preguntar si a menudo o comúnmente está mal visto. Se ha cambiado para reflejar esto.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En un establecedor de propiedades, el value del nombre de la variable está reservado. Se utiliza como el nombre de la variable que se puede asignar a un campo de respaldo.

La pregunta: ¿siempre es seguro usar "valor" como un nombre de variable fuera de un establecedor de propiedades? Si no, ¿cuándo se puede hacer esto de manera segura? Y, ¿se considera esto una mala práctica?

Solo se reserva en el setter de la propiedad. Es un nombre muy genérico, pero a menudo puede ser la mejor descripción de la variable con la que está trabajando.

información MSDN

over 4 years ago · Santiago Trujillo Relatório

0

Esto es lo que dice MSDN :

El descriptor de acceso set se parece a un método cuyo tipo de valor devuelto es nulo. Utiliza un parámetro implícito llamado valor, cuyo tipo es el tipo de la propiedad.

Las propiedades son básicamente azúcar sintáctica que evita tener que escribir muchos métodos get_Bar y set_Bar (nota: también hay otras ventajas, el CLR sabe que es una propiedad). Por ejemplo, si tienes una clase como esta:

 public class Foo { private int _bar; public int Bar { get { return _bar; } set { _bar = value; } } }

Generará IL (para el colocador) que se parece a esto:

 .method public hidebysig specialname instance void set_Bar(int32 'value') cil managed { // .maxstack 8 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.1 IL_0003: stfld int32 Program/Foo::_bar IL_0008: ret } // end of method Foo::set_Bar

Lo que hay que tener en cuenta aquí es que el método set_Bar toma un parámetro llamado value . Entonces, no solo se "parece" a un método cuyo tipo de retorno es nulo con un parámetro llamado value , en realidad es eso.

Entonces, obviamente, no puedes usar el value para otra cosa en un setter.

Ahora, ¿debería usarlo en otro lugar? Depende. Si es obvio a qué se refiere en el contexto en el que lo está usando, entonces seguro. Si el value es ambiguo en un contexto particular, utilice algo más explícito.

Desde MSDN :

El valor de la palabra clave contextual se usa en el descriptor de acceso del conjunto en las declaraciones de propiedades ordinarias.

No menciona ningún otro contexto en el que value se considere una palabra clave, por lo que, aparte de un setter, o en cualquier otro lugar donde ya se haya definido , debería estar bien usando value . ¿Es una mala práctica? No como regla, no más que cualquier otro nombre de variable potencialmente ambiguo.

Editar: un lugar donde creo que tener value como nombre sería realmente problemático sería como un campo (o peor aún, una propiedad) en una clase. Por ejemplo:

 public class Foo { private int value; public int Value { get { return value; } set { value = value; } // which `value` are you setting? and to what? } }

Ahora podría eliminar la ambigüedad aquí con this.value = value , pero sigue siendo feo y me parece mejor usar un nombre diferente para su campo.

over 4 years ago · Santiago Trujillo Relatório

0

Está bien usar value como identificador en cualquier lugar fuera de un descriptor de acceso set . La especificación del lenguaje C# (vinculando la versión anterior) dice:

Dado que un descriptor de acceso de conjunto tiene implícitamente un parámetro llamado value , es un error de tiempo de compilación que una variable local o declaración constante en un descriptor de acceso de conjunto tenga ese nombre.

El value de Word no es (y nunca fue) una palabra clave completa en C#, incluso si ha tenido este uso especial en setters desde C# 1.

Consulte el value (referencia de C#) para obtener más información.

Por supuesto, si tiene un campo (variable de nivel de clase) llamado value y desea acceder a él desde un descriptor de acceso set , use this.value (o NameOfYourType.value para campos static ).


Para obtener una lista de palabras clave reales y "palabras clave" contextuales, consulte también Palabras clave de C# .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda